package cn.wolfcode.crm.mapper;

import cn.wolfcode.crm.domain.Role;
import cn.wolfcode.crm.query.QueryObject;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface RoleMapper {
    int deleteByPrimaryKey(Long id);

    int insert(Role record);

    Role selectByPrimaryKey(Long id);

    List<Role> selectAll();

    int updateByPrimaryKey(Role record);

    int queryCount(QueryObject qo);

    List<Role> queryList(QueryObject qo);

    /**
     * 校验角色编码
     * @param sn    角色编码
     * @return
     */
    Role validateSn(String sn);

    /**
     * 插入外键 维护外键表关系
     * @param roleId    角色ID
     * @param permissionId  权限ID
     */
    void insertPermissionRelation(@Param("roleId") Long roleId,
                                  @Param("permissionId") Long permissionId);

    /**
     * 删除之前 先删除外键表的关系
     * @param roleId    角色roleId
     */
    void deletePermissionRelation(Long roleId);

    /**
     * 根据员工ID 查询所拥有的角色
     * @param employeeId
     */
    List<Long> selectByEmployeeId(Long employeeId);

    void deleteMenuRelation(Long roleId);

    void insertMenuRelation(@Param("roleId") Long roleId,
                            @Param("menuId") Long menuId);

    List<String> selectRoleByEmployee(Long employeeId);
}